home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 011-020 / amok15 / seafarers_manual / source / convertdec.mod < prev    next >
Text File  |  1993-11-04  |  1KB  |  52 lines

  1. MODULE ConvertDec;   (* Convert decimal number to octal or hex
  2.                         using procedure variables *)
  3.  
  4.   (* From the book "Modula-2  A Seafarer's Manual and Shipyard Guide" *)
  5.   (* Page 159   adapted "Amiga M2Modula-2"   10 Mar 1988 *)
  6.  
  7. FROM InOut IMPORT WriteLn,
  8.                   WriteOct,
  9.                   WriteHex,
  10.                   WriteString,
  11.                   ReadLongInt,
  12.                   ReadString,
  13.                   Read;
  14.                   
  15. TYPE
  16.   DispProc = PROCEDURE (LONGINT, INTEGER);
  17.   
  18. VAR
  19.   outp : DispProc;            (* procedure variable *)
  20.   InNum : LONGINT;
  21.   NILread : ARRAY [0..80] OF CHAR;    (* dummy for wrong procedure Read *)
  22.   ch : CHAR;
  23.   
  24. PROCEDURE ShowAnswer (showproc : DispProc;
  25.                       number : LONGINT);
  26.  
  27.   BEGIN
  28.     WriteLn;
  29.     WriteString ("Converted result = ");
  30.     showproc (number,0);
  31.     WriteLn;
  32.   END ShowAnswer;
  33.   
  34. BEGIN
  35.   WriteLn;
  36.   WriteString ("Enter value to be converted: ");
  37.   ReadLongInt (InNum);
  38.   WriteLn;
  39.   WriteString ("Convert to hex? ");
  40.   Read (ch);
  41.   ReadString (NILread);
  42.   IF (CAP(ch) = "Y") THEN        (* convert to hex? *)
  43.     outp := WriteHex;            (* yes - use hex procedure *)
  44.   ELSE
  45.     outp := WriteOct;            (* no - assume octal *)
  46.   END;
  47.   ShowAnswer (outp, InNum);
  48.   
  49. END ConvertDec.
  50.  
  51.   
  52.